using System;

namespace lucere.service.search
{
	///<summary>
	/// Expert: A ScoreDoc which also contains information about
	/// how to sort the referenced document.  In addition to the
	/// document number and score, this object contains an array
	/// of values for the document from the field(s) used to sort.
	/// For example, if the sort criteria was to sort by fields
	/// "a", "b" then "c", the <code>fields</code> object array
	/// will have three elements, corresponding respectively to
	/// the term values for the document in fields "a", "b" and "c".
	/// The class of each element in the array will be either
	/// Integer, Float or String depending on the type of values
	/// in the terms of each field.
	/// <see cref="IScoreDoc"></see>
	/// <see cref="ITopFieldDocs"></see>
	///</summary>
	public interface IFieldDoc : IScoreDoc
	{
		///<summary>
		/// Expert: The values which are used to sort the referenced document.
		/// The order of these will match the original sort criteria given by a
		///Sort object.  Each Object will be either an Integer, Float or String,
		///depending on the type of values in the terms of the original field.
		///@see Sort
		///@see Searcher#search(Query,Filter,int,Sort)
		///</summary>
		IComparable[] Fields { get; set; }
	}
}